package day14;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.ListIterator;

/*本类用于测试ArrayList的相关内容*/
public class TestArrayList {
    public static void main(String[] args) {
        //1.创建对象
        //底层会自动帮我们创建数组存放对象,默认初始容量是10
        ArrayList<Integer> list = new ArrayList<Integer>();
        //2.向集合中添加元素
        list.add(100);
        list.add(200);
        list.add(300);
        list.add(400);
        list.add(500);
        System.out.println(list);
        //3.开始做测试--单个集合
        //list.clear();//清空集合
        System.out.println(list.contains(100));//判断是否包含指定元素100
        System.out.println(list.get(0));//根据下标获取指定元素
        System.out.println(list.indexOf(500));//获取指定元素的下标
        list.set(2,200);//给指定下标处添加集合元素200
        System.out.println(list);
        System.out.println(list.lastIndexOf(200));//获取指定元素最后一次出现的位置
        System.out.println(list.isEmpty());//判断集合是否为空
        list.remove(1);//移出指定下标处的元素
        /*list.remove(300);--这样写会报错
        数组下标越界,index=300,size=4
        * 这个方法是根据下标值来删除元素的,而本集合没有300的下标,所以数组下标越界
        如果想根据具体的元素内容移出元素,需要先把int类型的数据转成Integer数据类型*/
        System.out.println(list.remove(Integer.valueOf(300)));
        System.out.println(list);
        System.out.println(list.size());//获取集合中元素的个数
        System.out.println(Arrays.toString(list.toArray()));//集合转数组

        //迭代方式
        System.out.println("迭代方式一");
        for(int i = 0; i < list.size();i++){
            System.out.println(list.get(i));
        }
        System.out.println("迭代方式二");
        for(Integer i : list){
            System.out.println(i);
        }
        System.out.println("迭代方式三");
        Iterator<Integer> it = list.iterator();
        while (it.hasNext()){
            System.out.println(it.next());
        }
        System.out.println("迭代方式四");
        ListIterator<Integer> it2 = list.listIterator();
        while(it2.hasNext()){
            System.out.println(it2.next());
        }
    }
}
